package com.ck.ips.controller.sys;

import com.ck.common.model.Module;
import com.ck.core.annotation.LoginRequired;
import com.ck.core.annotation.SysLog;
import com.ck.core.constant.ModuleConstant;
import com.ck.ips.controller.BaseController;
import com.ck.ips.service.sys.ModuleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
* @Description: 模块controller
* @Author: hf
* @Date:    2019/4/30 15:04
* @Version: 1.0
*/
@LoginRequired
@RestController
@RequestMapping("/module")
public class ModuleController extends BaseController {

	@Autowired
	private ModuleService moduleService;

	/**
	 * 获取某个角色的所有菜单
	 */
	@PostMapping("/listRoleModule")
	public Object getMenuTreeByRoleId(Long roleId) {
		return moduleService.getMenuByRoleId(roleId,true);
	}

	/**
	 * 获取登录用户的菜单
	 * @return
	 */
	@PostMapping(value = "/listUserModule")
	public Object listMenuTreeByUserId() {
		return moduleService.getUserResources();
	}

	/**
	 * 获取所有菜单列表
	 * @return
	 */
	@PostMapping(value = "/listAllModule")
	public Object listMenuModule() {
		return moduleService.listAllModule(true);
	}



	/**
	 * 保存模块
	 */
	@SysLog(module = ModuleConstant.MODULE_MENU)
	@PostMapping(value = "/save")
	public Object saveModule(Integer status, String icon, String moduleDesc, String moduleName, Long parentId, String url, Integer type, String defaultIcon, String lightIcon) {
		Module module = new Module();
		module.setParentId(parentId);
		module.setModuleDesc(moduleDesc);
		module.setModuleName(moduleName);
		module.setUrl(url);
		module.setStatus(status);
		module.setIcon(icon);
		module.setType(type);
		module.setDefaultIcon(defaultIcon);
		module.setLightIcon(lightIcon);
		return moduleService.saveModule(module);
	}

	/**
	 * 修改模块
	 */
	@SysLog(module = ModuleConstant.MODULE_MENU)
	@PostMapping(value = "/update")
	public Object updateModule(Integer status, String icon, String moduleDesc, String moduleName, Long moduleId, Long parentId, String url, Integer type, String defaultIcon, String lightIcon) {
		Module module = new Module();
		module.setModuleId(moduleId);
		module.setParentId(parentId);
		module.setModuleDesc(moduleDesc);
		module.setModuleName(moduleName);
		module.setUrl(url);
		module.setStatus(status);
		module.setIcon(icon);
		module.setType(type);
		module.setDefaultIcon(defaultIcon);
		module.setLightIcon(lightIcon);
		return moduleService.updateModule(module);
	}

	/**
	 * 删除模块
	 */
	@SysLog(module = ModuleConstant.MODULE_MENU)
	@PostMapping(value = "/delete")
	public Object deleteModule(Long moduleId) {
		return moduleService.deleteModuleById(moduleId);
	}
}
